package com.kmxd.ams.client.archive.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import java.io.Serializable;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import lombok.Data;

/**
 * 整理规则-分类管理
 *
 * @author nickbi
 * @since 2022-07-19
 */
@Schema(description = "整理规则-分类管理对象")
@Data
public class ArchiveClassifyAddDTO implements Serializable {

  private static final long serialVersionUID = 1L;

  /** 主键ID */
  @Schema(description = "主键ID")
  private Long id;

  /** 全宗ID */
  @Schema(description = "全宗ID")
  @NotNull(message = "全宗ID不能为空")
  private Long fondsId;

  /** 门类配置id 将s_archive_rule表中的arch_type_id冗余过来，便于查询 */
  @Schema(description = "门类配置id 将s_archive_rule表中的arch_type_id冗余过来，便于查询")
  @NotNull(message = "门类配置id 将s_archive_rule表中的arch_type_id冗余过来，便于查询不能为空")
  private Long archiveTypeId;

  /** 父节点id 父节点id，自关联，顶层默认0 */
  @Schema(description = "父节点id 父节点id，自关联，顶层默认0")
  private Long pid;

  /** 分类号 */
  @Schema(description = "分类号")
  @NotBlank(message = "分类号不能为空")
  @Size(max = 100, message = "分类号长度不能超过100个字符")
  private String code;

  /** 名称 */
  @Schema(description = "名称")
  @NotBlank(message = "名称不能为空")
  @Size(max = 100, message = "名称长度不能超过100个字符")
  private String name;

  /** 路径 取父节点的path字段加上/自己id/作为参数值 */
  @Schema(description = "路径 取父节点的path字段加上/自己id/作为参数值")
  private String path;

  /** code路径 取父节点的pathcode字段加上[s_archive_rule.separator]+[自己code]作为值。顶级节点是[自己code] */
  @Schema(
      description = "code路径 取父节点的pathcode字段加上[s_archive_rule.separator]+[自己code]作为值。顶级节点是[自己code]")
  private String pathCode;

  /** 归档范围 */
  @Schema(description = "归档范围")
  private String pigeonhole;

  /** 保管期限 */
  @Schema(description = "保管期限")
  private String deadline;

  /** 密级 */
  @Schema(description = "密级")
  private String secret;

  /** 关联版本信息 */
  @Schema(description = "关联版本信息")
  @NotNull(message = "关联版本信息不能为空")
  private Long versionId;

  /** 从0开始 */
  @Schema(description = "从0开始")
  private Integer level;

  /** 备注 */
  @Schema(description = "备注")
  private String remark;

  /** 默认值 */
  @Schema(description = "默认值")
  private String defaultValue;

  /** 提示信息 */
  @Schema(description = "提示信息")
  private String alertInfo;

  /** 排序 */
  @Schema(description = "排序")
  private Integer sort;
}
